package flex.cc.uac.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
import flex.cc.uac.entity.UacRoleUserEntity;
import flex.cc.uac.vo.RoleUserVo;

import java.util.List;

/**
 * 角色用户中间表
 *
 * @author zhangzk
 * @email zhangzhikai@sinosoft.com.cn
 * @date 2020-07-12 00:00:12
 */
public interface UacRoleUserService extends IService<UacRoleUserEntity> {

    /**
     * 根据角色信息查询用户ID集合.
     *
     * @param roleId the role id
     *
     * @return the list
     */
    List<UacRoleUserEntity> listByRoleId(Long roleId);


    List<UacRoleUserEntity> listByUserId(Long userId);

    /**
     * 根据角色ID解除关联关系.
     *
     * @param roleId the role id
     */
    void deleteByRoleId(Long roleId);

    boolean deleteByUserId(Long userId);


    List<UacRoleUserEntity> listByRoleIdList(List<Long> roleIdList);

    /**
     * 据角色ID集合解除关联关系.
     * @param roleIdList
     */
    void deleteByRoleIdList(List<Long> roleIdList);

    /**
     * 用户是否绑定该角色.
     *
     */
    UacRoleUserEntity getByUserIdAndRoleId(Long userId, Long roleId);

    /**
     * 保存用户角色中间表信息.
     * @param userId
     * @param roleId
     * @return
     */
    boolean saveRoleUser(Long userId, Long roleId);

    /**
     * 获得绑定或未绑定用户信息
     */
    IPage<RoleUserVo> getRoleUserWithPage(long pageNum, long pageSize, Long roleId, String bindStatus, String condition);
}

